package com.learn.designPatterns.createType.singleton;

/**
 * @classname:
 * @Description: 懒汉式-线程安全
 * @author: yfpu
 * @Date: 2018-08-21 17:45
 */
public class Singleton3_Lazy_Sync {

    /**
     * 只需要对 getUnquiqueInstance 方法加锁，那么在一个时间点只能有一个线程能够进入该方法，从而避免了多次实例化
     * uniqueInstance 的问题。
     * 但是当一个线程进入该方法之后，其它试图进入该方法的线程都必须等待，因此性能上有一定的损耗。
     *
     */

    private static Singleton3_Lazy_Sync unquiqueInstance = null;

    private Singleton3_Lazy_Sync() {
    }

    public static synchronized Singleton3_Lazy_Sync getUnquiqueInstance() {
        if (unquiqueInstance == null)
            unquiqueInstance = new Singleton3_Lazy_Sync();
        return unquiqueInstance;
    }
}
